Computerized devices are an important part of the modern life. They control almost every aspect of our life—from writing documents to controlling traffic lights. However, computerized devices are bug-prone, and thus require a verification phase in which the bugs should be discovered. The verification phase is considered one of the most difficult tasks in developing a computerized device. Many developers of computerized devices invest a significant portion of the development cycle to discover erroneous behaviors of the computerized device, also referred to as a target computerized system. The target computerized system may comprise hardware, software, firmware, a combination thereof and the like. In some cases, a target device is defined by a design, such as provided by a hardware descriptive language such as VHDL, SystemC, or the like.
A soft error, or a fault, is a transient bit-flip or similar value modification that occurs spontaneously. In some cases, the soft error may be caused due to particle strike. An error in a design occurs when a fault results in data corruption. Typically for hardware designs, an error may be a situation when a corrupted value appears on the outputs of the design (or on a predefined set of cut-points). A fault does not always become an error; it may vanish through logical masking, electrical masking, fault detection modules, and the like. Whether or not a fault becomes an error may depend on a state of the target computerized system when the fault occurs and on input values in subsequent cycles.
The main origin of soft errors is sequential elements. Accordingly, a bit-flip that occurs in a memory element, such as a latch or a flip-flop, which is used in a design, is a fault that is most likely to cause an error. Therefore likelihood soft-errors may be reduced by reducing likelihood of bit-flips in the memory elements.
One method to protect circuits from soft errors is using hardening techniques which increases electrical resistance of the memory elements and thus increases an energy needed to flip the value of the memory element. However, this approach is expensive from power and area point of view. Therefore, there is a limited budget for hardening sequential elements in the circuit.
preventing or reducing likelihood of soft errors is specifically critical in computerized devices that are operated in a hazardous environment, such as outer-space. Such devices may be extremely expensive, and an undetected bug in them may be very costly. For example, consider a bug in a satellite which may cause the satellite to crash. Even a relatively simple bug, such as that causes the satellite to not function correctly may be very expensive to fix, as fixing it may require sending people to outer-space.